package com.example.week9_advanceui;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;

import java.util.ArrayList;

public class ListView3_Activity extends AppCompatActivity {
    // 定义下拉列表需要显示的文本数组
    private String[] learningSiteArray = {"逸夫图书馆", "承先图书馆", "综合楼", "四教", "五教", "六教"};
    ArrayList arrayList = new ArrayList();
    //定义 ListView 对象
    ListView listView = null ;
    //定义用于”添加“的编辑框对象
    EditText addEdt;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_listview3);
        for (int i = 0; i < learningSiteArray.length; i++) {
            arrayList.add(learningSiteArray[i]);
        }
        listView = findViewById(R.id.listview3);
        //创建 Adapter 对象，因为其后要实现数据源的更新，
        // 故不能像教材中那样用匿名对象，也不能使用固定大小的数组
        ArrayAdapter adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, arrayList);

        //为自定义的 listview 设置 ListView 的 Adapter 对象(和 ListView2 有区别)
        listView.setAdapter(adapter);
        //设置 ListView 中数据项被点击的事件监听
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                                    int position, long id) {
                Toast.makeText(ListView3_Activity.this,
                        "您选择了" + learningSiteArray[position], Toast.LENGTH_LONG)
                        .show();
            }
        });
        //初始化处理“添加”逻辑的组件
        addEdt = findViewById(R.id.addListView3Edt);
                //设置”添加“按钮的事件监听
        findViewById(R.id.addListView3Bnt).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //向 arrayList 数组中增加一个元素
                arrayList.add(addEdt.getText().toString());
                //通知 Adapter 对象刷新数据集（这一步很关键）
                adapter.notifyDataSetInvalidated();
                //清空编辑框
                addEdt.setText("");
            }
        });
    }
}